import urllib.request
import re
import xlwt
import time

# 存储信息列表
let_info = []

# 循环爬取70页数据
for i in range(0,70):
    print('获取第%d页信息'%(i+1))
    # 构造url地址
    url = 'http://dingzhou.58.com/chuzu/pn'+str(i+1)

    # 封装信息

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36'}
    req = urllib.request.Request(url,headers=headers)

    # 发送请求，爬取数据

    res = urllib.request.urlopen(req)

    # 从响应中获取数据，并解码
    html = res.read().decode('utf-8')
    #print(len(html))

    # 正则解析出标题，图片，户型，价格

    pat = '''<div class="des">.*?<a href="(.*?)".*?target="_blank".*?>(.*?)\|(.*?)</a>.*?<p class="room">(.*?)&nbsp;&nbsp;&nbsp;&nbsp;(.*?)㎡</p>.*?biaoti_shangquan.*?>(.*?)</a>.*?<div class="money">.*?<b>(.*?)</b>'''
    dlist = re.findall(pat,html,re.S)

    # 遍历输出结果,用append追加到列表中

    for v in dlist:
        let_info.append(v)
        
    # 设置时间间隔，防止ip被封    
    time.sleep(2)

# 构造excel表格
new_excel = xlwt.Workbook()
new_sheet = new_excel.add_sheet('sheet')
new_sheet.write(0,0,'出租方式')
new_sheet.write(0,1,'简介')
new_sheet.write(0,2,'房间')
new_sheet.write(0,3,'面积(㎡)')
new_sheet.write(0,4,'商圈')
new_sheet.write(0,5,'价格(元)')
new_sheet.write(0,6,'详情链接')


# 将列表信息写入excel表格



print("共获取到%d条信息\n将数据写入表格中···" % len(let_info))
for i in range(0,len(let_info)):
    new_sheet.write(i+1,0,let_info[i][1].replace('\n','').replace(' ',''))  # 出租方式
    new_sheet.write(i+1,1,let_info[i][2].replace(' ',''))   # 简介
    new_sheet.write(i+1,2,let_info[i][3].replace(' ',''))   # 房间
    # 不能转为float类型的保持原样
    try:
        new_sheet.write(i+1,3,float(let_info[i][4]))    # 面积
    except:
        new_sheet.write(i+1,3,let_info[i][4])
    new_sheet.write(i+1,4,let_info[i][5])   # 商圈
    # 不能转为float类型的保持原样
    try:
        new_sheet.write(i+1,5,float(let_info[i][6]))    # 价格
    except:
        new_sheet.write(i+1,5,let_info[i][6])
    new_sheet.write(i+1,6,let_info[i][0])   # 链接
new_excel.save(r'58定州租房信息urllib.xls')
print("写入完成！")
